package com.atguigu.guli.service.base.config;

import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @className: Swagger2Config
 * @description: Swagger2配置文件
 * @date: 2020/11/16
 * @author: cakin
 */
@Configuration
@EnableSwagger2
public class Swagger2Config {
    /**
     * 功能描述：网站api的配置
     *
     * @return Docket 网站api的配置
     * @author cakin
     * @date 2020/11/16
     */
    @Bean
    public Docket webApiConfig() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi") // 组名
                .apiInfo(webApiInfo())
                .select()
                .paths(Predicates.and(PathSelectors.regex("/api/.*"))) // 过滤的URL地址
                .build();
    }
    /**
     * 功能描述：后台api的配置
     *
     * @return Docket 后台api的配置
     * @author cakin
     * @date 2020/11/16
     */
    @Bean
    public Docket adminApiConfig() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("adminApi") // 组名
                .apiInfo(adminApiInfo())
                .select()
                .paths(Predicates.and(PathSelectors.regex("/admin/.*"))) // 过滤的URL地址
                .build();
    }

    private ApiInfo webApiInfo() {
        return new ApiInfoBuilder()
                .title("网站的API文档") // 标题
                .description("本文档描述了谷粒学院网站的api接口定义") // 描述
                .version("1.0") // 版本
                .contact(new Contact("cakin", "http://atguigu.com", "798103175@qq.com")) // 联系人
                .build();
    }

    private ApiInfo adminApiInfo() {
        return new ApiInfoBuilder()
                .title("后台管理系统的API文档") // 标题
                .description("本文档描述了谷粒学院后台管理系统的api接口定义") // 描述
                .version("1.0") // 版本
                .contact(new Contact("cakin", "http://atguigu.com", "798103175@qq.com")) // 联系人
                .build();
    }
}
